package com.zusmart.core.condition;

import java.lang.annotation.Annotation;
import java.util.Map;

import com.zusmart.core.bean.BeanDefinition;
import com.zusmart.core.config.ConfigSourceManager;
import com.zusmart.core.plugin.PluginManager;

public interface ConditionContext {

	public BeanDefinition getSourceBeanDefinition();

	public ConditionFrom getConditionFrom();

	public ConditionType getConditionType();

	public Conditional getNativeAnnotation();

	public Annotation getExtendAnnotation();

	public boolean isFromClass();

	public boolean isFromMethod();

	public boolean isTypeNative();

	public boolean isTypeExtend();

	public boolean execute(Map<String, BeanDefinition> beanDefinitions, BeanDefinition targetBeanDefinition, PluginManager pluginManager, ConfigSourceManager configSourceManager);

}